<?xml version = '1.0' encoding = 'UTF-8'?>
<HBRRepo><variables><variable name="PeriodsVar" type="members" usage="const" id="1" product="Planning"><property name="application">SalesPln</property><property name="plantype">OEP_GSP</property><property name="dimension">Period</property><property name="dimensionInputMode">name</property><property name="display_label">Period</property><property name="prompt_text">ID_PRMTEXT_GSP_PERIODS</property><property name="scope">87654321</property><property name="seeded">true</property><value>&amp;OEP_CurMnth</value></variable><variable name="YearsVar" type="members" usage="const" id="2" product="Planning"><property name="application">SalesPln</property><property name="plantype">OEP_GSP</property><property name="dimension">Years</property><property name="display_label">Years</property><property name="prompt_text">ID_PRMTEXT_GSP_YEARS</property><property name="scope">87654321</property><property name="seeded">true</property><value>"No Year"</value></variable></variables><rulesets><ruleset id="1" name="OGS_PrepareActual" product="Planning"><property name="application">SalesPln</property><property name="mergeVars">true</property><property name="seeded">true</property><variable_references><variable_reference name="YearsVar" id="2"><property name="application">SalesPln</property><property name="hasvalue">true</property><property name="hidden">false</property><property name="plantype">OEP_GSP</property><property name="rule_name">OGS_ProcessActual</property><property name="seq">1</property><property name="seq_index">1</property><property name="type">4</property><property name="useAsOverrideValue">false</property><property name="value">&amp;OEP_CurMnth</property></variable_reference><variable_reference name="PeriodsVar" id="1"><property name="application">SalesPln</property><property name="hasvalue">true</property><property name="hidden">false</property><property name="plantype">OEP_GSP</property><property name="rule_name">OGS_ProcessActual</property><property name="seq">2</property><property name="seq_index">1</property><property name="type">4</property><property name="useAsOverrideValue">false</property><property name="value">&amp;OEP_CurMnth</property></variable_reference></variable_references><step type="rule" id="1" name="OGS_PROCESSACTUAL" seq="1"><property name="application">SalesPln</property><property name="launch_application">SalesPln</property><property name="launch_plantype">OEP_GSP</property><property name="plantype">OEP_GSP</property><property name="product">Planning</property></step><step type="rule" id="2" name="OGS_EXECUTE DATA PUSH ACTUAL" seq="2"><property name="application">SalesPln</property><property name="launch_application">SalesPln</property><property name="launch_plantype">OEP_GSP</property><property name="plantype">OEP_GSP</property><property name="product">Planning</property></step></ruleset></rulesets><rules><rule id="2" name="OGS_Execute Data Push Actual" product="Planning"><property name="application">SalesPln</property><property name="plantype">OEP_GSP</property><property name="seeded">true</property><variable_references><variable_reference name="PeriodsVar" id="1"><property name="application">SalesPln</property><property name="hasvalue">true</property><property name="hidden">false</property><property name="plantype">OEP_GSP</property><property name="rule_name">OGS_Execute Data Push Actual</property><property name="seq">1</property><property name="type">4</property><property name="useAsOverrideValue">false</property></variable_reference><variable_reference name="YearsVar" id="2"><property name="application">SalesPln</property><property name="hasvalue">true</property><property name="hidden">false</property><property name="plantype">OEP_GSP</property><property name="rule_name">OGS_Execute Data Push Actual</property><property name="seq">2</property><property name="type">4</property><property name="useAsOverrideValue">false</property></variable_reference></variable_references><script type="groovy">/* RTPS:  {YearsVar} {PeriodsVar}*/
List&lt;String>  periods=rtps.PeriodsVar.members.name;
List&lt;String>  years=rtps.YearsVar.members.name;

if (periods.size()>0) {
	String periodsStr = """\"${periods.join('", "')}\""""   

	String yearsStr = """\"${years.join('", "')}\"""" 

	if(operation.application.hasDataMap("Push_to_Reporting"))
		operation.application.getDataMap("Push_to_Reporting").execute(["Scenario":"OEP_Actual","Years":yearsStr,"Period":periodsStr, "Version":"OEP_Working Bottom Up"], true) 
}</script></rule><rule id="1" name="OGS_ProcessActual" product="Planning"><property name="application">SalesPln</property><property name="plantype">OEP_GSP</property><property name="seeded">true</property><variable_references><variable_reference name="YearsVar" id="2"><property name="application">SalesPln</property><property name="hasvalue">true</property><property name="hidden">false</property><property name="plantype">OEP_GSP</property><property name="rule_name">OGS_ProcessActual</property><property name="seq">1</property><property name="type">4</property><property name="useAsOverrideValue">false</property><property name="value">&amp;OEP_CurYr</property></variable_reference><variable_reference name="PeriodsVar" id="1"><property name="application">SalesPln</property><property name="hasvalue">true</property><property name="hidden">false</property><property name="plantype">OEP_GSP</property><property name="rule_name">OGS_ProcessActual</property><property name="seq">2</property><property name="type">4</property><property name="useAsOverrideValue">false</property><property name="value">&amp;OEP_CurMnth</property></variable_reference></variable_references><script type="groovy">/* RTPS:  {PeriodsVar} {YearsVar}*/
def calcScript = new StringBuilder()

List&lt;String> CustomDimensions=[];
List&lt;String> CustomRelDimensions=[];
List&lt;String>  periods=rtps.PeriodsVar.members.name;
List&lt;String>  years=rtps.YearsVar.members.name;
String EntityDim="";
int iCnt;
boolean isCurrencyApp= false

Application app=operation.getApplication();

Cube gsp=app.getCube("OEP_GSP"); 
List&lt;Dimension> dimlist=app.getDimensions(gsp);

for (Dimension dim : dimlist) {
	DimensionType dType=dim.getType();
	if ((dType==DimensionType.CUSTOM &amp;&amp; dim.name != "Plan Element")) {
		CustomRelDimensions.add('''@Relative("OEP_Total '''+dim.getName()+'''",0)''');
		CustomDimensions.add(dim.getName());
	}
	if (dType==DimensionType.CURRENCY) {
		isCurrencyApp=true;
	}
	if (dType==DimensionType.ENTITY) {
		CustomRelDimensions.add('''@Relative("OEP_Total '''+dim.getName()+'''",0)''');
		EntityDim=dim.getName();
	}
}    

/*Calc Script */				
calcScript.append('''SET UPDATECALC OFF;\n''');

/*Main fix*/          
calcScript.append('''FIX("OGS_Base Forecast","OEP_Working Bottom Up"''');
if (years.size()>0) {
	calcScript.append(''','''+years.join(''',''')+'''\n''');
}

if (periods.size()>0) {
	calcScript.append(''','''+periods.join(''',''')+'''\n''');
}

if (isCurrencyApp==true) {
	calcScript.append(''',@levmbrs(Currency,0)''');		
}
calcScript.append(''')\n''');
calcScript.append('''	FIX(''')
calcScript.append(CustomRelDimensions.join(''','''));
calcScript.append(''')\n''');

/*Copies data from Actual for Forecast*/
calcScript&lt;&lt;''' Fix(OEP_Actual,"OEP_Working Bottom Up")
"OGS_Sales Revenue"="OGS_CY Bookings";
endfix

ENDFIX
ENDFIX'''  
println(calcScript.toString())
return calcScript.toString()
</script></rule></rules><components/><deployobjects><deployobject product="2" application="salespln" plantype="oep_gsp" obj_id="1" obj_type="1" name="OGS_PROCESSACTUAL"/><deployobject product="2" application="salespln" plantype="oep_gsp" obj_id="2" obj_type="1" name="OGS_EXECUTE DATA PUSH ACTUAL"/><deployobject product="2" application="salespln" obj_id="1" obj_type="2" name="OGS_PREPAREACTUAL"/></deployobjects></HBRRepo>